local opt = vim.opt -- for conciseness

-- line wrapping
opt.wrap = false -- disable line wrapping

-- search settings
opt.ignorecase = true -- ignore case when searching
opt.smartcase = true -- if you include mixed case in your search, assumes you want case-sensitive

-- appearance

-- turn on termguicolors for nightfly colorscheme to work
-- (have to use iterm2 or any other true color terminal)
opt.termguicolors = true
opt.background = "dark" -- colorschemes that can be light or dark will be made dark

-- backspace
opt.backspace = "indent,eol,start" -- allow backspace on indent, end of line or insert mode start position

-- 配置剪切板
-- clipboard
local uname = vim.loop.os_uname()
_G.OS = uname.sysname
_G.IS_MAC = OS == "Darwin"
_G.IS_LINUX = OS == "Linux"
_G.IS_WINDOWS = OS:find("Windows") and true or false
_G.IS_WSL = IS_LINUX and uname.release:find("Microsoft") and true or false

if _G.IS_MAC or _G.IS_LINUX then
	opt.clipboard:append("unnamedplus") -- use system clipboard as default register
end
-- opt.clipboard:append("unnamedplus") -- use system clipboard as default register

opt.clipboard:append("unnamedplus") -- use system clipboard as default register

-- split windows
opt.splitright = true -- split vertical window to the right

-- utf8
vim.g.encoding = "UTF-8"
opt.fileencoding = "utf-8"
-- timeoutlen default 1000
opt.timeoutlen = 600
-- ttimeoutlen default 50
opt.ttimeoutlen = 40

-- jkhl 移动时光标周围保留8行
opt.scrolloff = 8
opt.sidescrolloff = 8

-- 使用相对行号
vim.wo.number = true
vim.wo.relativenumber = true

-- 高亮所在行
opt.cursorline = true

-- 显示左侧图标指示列
opt.signcolumn = "yes"

-- 右侧参考线，超过表示代码太长了，考虑换行
-- vim.wo.colorcolumn = "80"

-- >> << 时移动长度
-- 设置tab
opt.shiftwidth = 4
opt.tabstop = 4
opt.expandtab = true -- expand tab to spaces

-- 新行对齐当前行
opt.autoindent = true
opt.smartindent = true

-- 搜索大小写不敏感，除非包含大写
opt.ignorecase = true
opt.smartcase = true

-- 搜索高亮
opt.hlsearch = true

-- 边输入边搜索
opt.incsearch = true

-- 命令行高为2，提供足够的显示空间
-- opt.cmdheight = 1

-- 当文件被外部程序修改时，自动加载
opt.autoread = true
vim.bo.autoread = true

-- 禁止折行
-- vim.wo.wrap = false

-- 光标在行首尾时<Left><Right>可以跳到下一行
opt.whichwrap = "<,>,[,]"

-- 允许隐藏被修改过的buffer
opt.hidden = true

-- 禁止创建备份文件
opt.backup = false
opt.writebackup = false
opt.swapfile = false
-- smaller updatetime
opt.updatetime = 300

-- opt.background = dark
-- opt.color = dark
-- vim.g.onedark_termcolors=256

-- 设置 timeoutlen 为等待键盘快捷键连击时间500毫秒，可根据需要设置
-- 遇到问题详见：https://github.com/nshen/learn-neovim-lua/issues/1
-- opt.timeoutlen = 500

-- split window 从下边和右边出现
-- opt.splitbelow = true
-- opt.splitright = true

-- 自动补全不自动选中
-- vim.g.completeopt = "menu,menuone,noselect,noinsert"

-- 样式
-- opt.termguicolors = true
-- opt.termguicolors = true

-- 补全增强
opt.wildmenu = true

-- Dont' pass messages to |ins-completin menu|
opt.shortmess = vim.o.shortmess .. "c"

-- 补全最多显示10行
opt.pumheight = 10

-- 永远显示 tabline
opt.showtabline = 4
-- 使用增强状态栏插件后不再需要 vim 的模式提示
opt.showmode = false

-- 配置剪切板
opt.clipboard = "unnamedplus"

-- 无意义空格显示为 ····
vim.cmd([[
    set listchars=tab:\¦\ \ ,trail:·
]])

-- 打开文件是定位到上次编辑的位置
vim.cmd([[
    au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
]])

-- 如果打开的是 go 文件，缩进采用 tab 而非 空格
vim.cmd([[ 
    " autocmd FileType c set et
    " autocmd FileType cpp set et
    " autocmd FileType sh set et
    " autocmd FileType python set et
    autocmd FileType go set et!
]])
